<?php
/**
 * Copyright (c) 2008-2011 Submit Consulting. Lima-Peru. All Right Reserved.
 * @author Ing. Angel Sullon M. (asullom@hotmail.com)
 * Created: 21.SEP.2000
 * Last Modify: 11.AGO.2011
 * Description of IteracionData: CRUD
 */
class IteracionData {

	public function create(Iteracion $nuevo) {
		$tran= new ConnectDB();
		$tran->getConnection();
		$r=0;
		try{
			$tran->begin();
			$qry=" SELECT COALESCE(MAX(IteracionId)+1,1) AS Id FROM Iteracion ";
			$rs=mysql_query($qry) or die("<p class=error>".mysql_error()." table Iteracion</p>");
			if( $row=mysql_fetch_array($rs) )
			$nuevo->setIteracionId( $row["Id"] );
			$qry=" INSERT INTO Iteracion
            	(IteracionId,ProyectoId,RutaSprint,Objetivo,Retrospectiva,
            	FechaInicio,FechaTermino,Historia, Estado, FechaAlta)
                values(?,?,?,?,?   ,str_to_date(?,'%d/%c/%Y'),str_to_date(?,'%d/%c/%Y'),? ,?, now()) ";
			$pre = new PrepareQuery($qry);
			$pre->set($nuevo->getIteracionId());
			$pre->set($nuevo->getProyectoRef()->getProyectoId());
			$pre->set($nuevo->getRutaSprint());
			$pre->set($nuevo->getObjetivo());
			$pre->set($nuevo->getRetrospectiva());
			$pre->set($nuevo->getFechaInicio());
			$pre->set($nuevo->getFechaTermino());
			$pre->set($nuevo->getHistoria());
                        $pre->set($nuevo->getEstado());
			mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Iteracion", E_USER_ERROR. "</p>");;
			$r=mysql_affected_rows();
			$tran->commit();
		}catch(Exception $e){
			$tran->rollback();
			throw new GlobalException("IteracionData.create ".$e->getMessage());
		}
		$tran->close();
		return $r;
	}

	public function listByFilter($proyectoId) {//CRUD create, reader, update, delete
		$tran= new ConnectDb();
		$tran->getConnection();
		$li=array();
		try{
			$qry=" SELECT u.IteracionId,u.ProyectoId,u.RutaSprint,u.Objetivo,u.Retrospectiva,
            	DATE_FORMAT(u.FechaInicio, '%d/%c/%Y') as FechaInicio,DATE_FORMAT(u.FechaTermino, '%d/%c/%Y') as FechaTermino,
                u.Historia, u.Estado, DATE_FORMAT(u.FechaAlta, '%d/%c/%Y') as FechaAlta
	,
(SELECT  COALESCE( SUM(w.Esfuerzo) , 0 )
	FROM  Item w, Producto p
	WHERE w.productoId=p.productoId AND p.iteracionId=u.iteracionId
	AND w.ItemTipo LIKE  '%' AND w.Estado IN ('ToDo','New') ) AS EsfuerzoEnEspera
	,
(SELECT  COALESCE( SUM(w.Esfuerzo) , 0 )
	FROM  Item w, Producto p
	WHERE w.productoId=p.productoId AND p.iteracionId=u.iteracionId
	AND w.ItemTipo LIKE  '%' AND w.Estado IN ('Open','InProgress') ) AS EsfuerzoEnCurso
	,
(SELECT  COALESCE( SUM(w.Esfuerzo) , 0 )
	FROM  Item w, Producto p
	WHERE w.productoId=p.productoId AND p.iteracionId=u.iteracionId
	AND w.ItemTipo LIKE  '%' AND w.Estado IN ('Done','Closed','Approved') ) AS EsfuerzoCompletado
	,
(SELECT  COALESCE( SUM(w.Esfuerzo) , 0 )
	FROM  Item w, Producto p
	WHERE w.productoId=p.productoId AND p.iteracionId=u.iteracionId
	AND w.ItemTipo LIKE  '%' AND w.Estado IN ('ToDo','New','Open','InProgress','Done','Closed','Approved') ) AS EsfuerzoTotal
,(CASE  WHEN u.Estado='InProgress'  THEN '*' ELSE '' END) AS SprintActivo

                FROM Iteracion u
                WHERE  u.ProyectoId=?
                order by u.RutaSprint"; //w.ItemTipo LIKE  'Task' AND
			$pre = new PrepareQuery($qry);
			$pre->set($proyectoId);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Iteracion", E_USER_ERROR. "</p>");
			$u=0;
			while( $row=mysql_fetch_array($rs) ) {
				$d=new Iteracion();
				$d->setIteracionId($row["IteracionId"]);
				$d->getProyectoRef()->setProyectoId($row["ProyectoId"]);
				$d->setRutaSprint($row["RutaSprint"]);
				$d->setObjetivo($row["Objetivo"]);
				$d->setRetrospectiva($row["Retrospectiva"]);
				$d->setFechaInicio($row["FechaInicio"]);
				$d->setFechaTermino($row["FechaTermino"]);
				$d->setHistoria($row["Historia"]);
                                $d->setEstado($row["Estado"]);
                                $d->setFechaAlta($row["FechaAlta"]);
                                
                                $d->setEsfuerzoEnEspera($row["EsfuerzoEnEspera"]);
                                $d->setEsfuerzoEnCurso($row["EsfuerzoEnCurso"]);
                                $d->setEsfuerzoCompletado($row["EsfuerzoCompletado"]);
                                $d->setEsfuerzoTotal($row["EsfuerzoTotal"]);
                                $d->setSprintActivo($row["SprintActivo"]);
				$li[$u++]=$d;
			}
			mysql_free_result($rs);
		}catch(Exception $e){
			throw new GlobalException("IteracionData.listByFilter ".$e->getMessage());
		}
		$tran->close();
		return $li;
	}

	public function findByPk($id) {
		$tran= new ConnectDB();
		$tran->getConnection();
		$d=new Iteracion();
		try{
			$qry=" SELECT u.IteracionId,u.ProyectoId,u.RutaSprint,u.Objetivo,u.Retrospectiva,
            	DATE_FORMAT(u.FechaInicio, '%d/%c/%Y') as FechaInicio,DATE_FORMAT(u.FechaTermino, '%d/%c/%Y') as FechaTermino,
                u.Historia, u.Estado,  DATE_FORMAT(u.FechaAlta, '%d/%c/%Y') as FechaAlta
                FROM Iteracion u
                WHERE  u.IteracionId=?";
			$pre = new PrepareQuery($qry);
			$pre->set($id);
			$rs=mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Iteracion", E_USER_ERROR. "</p>");;
			if( $row=mysql_fetch_array($rs) ) {
				$d->setIteracionId($row["IteracionId"]);
                                $d->getProyectoRef()->setProyectoId($row["ProyectoId"]);
				$d->setRutaSprint($row["RutaSprint"]);
				$d->setObjetivo($row["Objetivo"]);
				$d->setRetrospectiva($row["Retrospectiva"]);
				$d->setFechaInicio($row["FechaInicio"]);
				$d->setFechaTermino($row["FechaTermino"]);
				$d->setHistoria($row["Historia"]);
                                $d->setEstado($row["Estado"]);
                                $d->setFechaAlta($row["FechaAlta"]);
			}
			mysql_free_result($rs);
		}catch(Exception $e){
			throw new GlobalException("IteracionData.findByPk ".$e->getMessage());
		}
		$tran->close();
		return $d;
	}

	public function update(Iteracion $dato) {
		$tran= new ConnectDB();
		$tran->getConnection();
		$r=0;
		try{
			$qry=" UPDATE Iteracion SET
                ProyectoId = ?,RutaSprint = ?,Objetivo = ?,Retrospectiva = ?,
            	FechaInicio = str_to_date(?,'%d/%c/%Y'),FechaTermino = str_to_date(?,'%d/%c/%Y'),Historia = ?, Estado = ?
                WHERE IteracionId=?";
			$pre = new PrepareQuery($qry);
			$pre->set($dato->getProyectoRef()->getProyectoId());
			$pre->set($dato->getRutaSprint());
			$pre->set($dato->getObjetivo());
			$pre->set($dato->getRetrospectiva());
			$pre->set($dato->getFechaInicio());
			$pre->set($dato->getFechaTermino());
			$pre->set($dato->getHistoria());
                        $pre->set($dato->getEstado());
			$pre->set($dato->getIteracionId());
			mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Iteracion", E_USER_ERROR. "</p>");
			$r=mysql_affected_rows();
		}catch(Exception $e){
			throw new GlobalException("IteracionData.update ".$e->getMessage());
		}
		$tran->close();
		return $r;
	}

	public function delete($id) {
		$tran= new ConnectDB();
		$tran->getConnection();
		$r=0;
		try{
			$qry=" DELETE FROM Iteracion WHERE IteracionId=? ";
			$pre = new PrepareQuery($qry);
			$pre->set($id);
			mysql_query($pre->getQuery()) or trigger_error("<p class=error>".mysql_error()." table Iteracion", E_USER_ERROR. "</p>");;
			$r=mysql_affected_rows();
		}catch(Exception $e){
			throw new GlobalException("IteracionData.delete ".$e->getMessage());
		}
		$tran->close();
		return $r;
	}

}
?>
